/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bizfty.api.apimanager.models;

import com.bizfty.api.commons.models.BasicEntity;
import java.util.List;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/**
 * 
 * @author johns
 */
public class Version extends BasicEntity {
    
    /**
     * 主版本
     * 大版本号不动意味着对外提供的API发生变动
     */
    private Integer main;
    
    /**
     * 子版本号
     * 子版本一般是功能添加已有功能不受影响
     */
    private Integer sub;
    
    /**
     * 修订版本
     */
    private Integer maintain;
    
    /**
     * 希腊字母所代表的版本阶段介绍
     * 先行版本号(Pre-release)：意味该版本不稳定，可能存在兼容性问题。 
     * 其格式为：X.Y.Z.[a-c][正整数]，如 1.0.0.a1，1.0.0.b99，1.0.0.c1000。
     * Alpha版：也叫α版，此版本主要是以实现软件功能为主，通常只在软件开发者内部交流，一般而言，该版本软件的Bug较多，需要继续修改。
     * Beta版：此版本相对于α版已经有了很大的改进，消除了严重的错误，但还是存在着一些缺陷，需要经过多次测试来进一步消除，此版本主要的修改对像是软件的UI。
     * RC版：此版本已经相当成熟了，基本上不存在导致错误的BUG，与即将发行的正式版相差无几，测试人员基本通过的版本。
     * Release版：此版本意味着“最终版本”、“上线版本”，在前面版本的一系列测试版之后，终归会有一个正式版本，是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下，
     * Release不会以单词形式出现在软件封面上，取而代之的是符号(R)。
     * 开发版本号：常用于 CI-CD（持续集成和持续交付）。 
     * 格式为 X.Y.Z-dev[正整数]，如 1.0.1-dev4。
     */
    private String stage;
    
    /**
     * 方法组
     */
    private List<Method> methods;
    
    /**
     * 模块
     */
    @ManyToOne
    @JoinColumn(name="MODULE_ID")
    private Module module;
}
